//1.引入mongodb
const { MongoClient } = require("mongodb");

//2.连接数据库
let url = "mongodb://localhost:27017";

MongoClient.connect(url, async (err, client) => {
  if (err) throw err;

  //连接数据库(如果没有这个数据库，就自动创建)
  let db = client.db("h52004");

  //查找集合(无则创建)
  let col = db.collection("songs");

  //对集合里面的数据进行 CRUD
  //   let song = [
  //     {
  //       id: 1,
  //       name: "月亮代表我的心",
  //     },
  //     {
  //       id: 2,
  //       name: "我心依旧",
  //     },
  //     {
  //       id: 3,
  //       name: "涛声依旧",
  //     },
  //     {
  //       id: 4,
  //       name: "匆匆那年",
  //     },
  //   ];

  //增 C create
  //   let data = await col.insertMany(song); //参数是一个数组 [{}]
  //   if (data.insertedCount) {
  //     console.log("插入成功");
  //   } else {
  //     console.log("插入失败");
  //   }
  //   console.log(data);

  //查 R retrieve
  //find(query)不写条件，默认就是查找所有的数据,query是一个对象：查询条件
  //   let data = await col.find().toArray();
  //   data.then((res) => {
  //     console.log(res);
  //   });
  //   console.log(data);

  //查询id=1的歌曲
  //   let data = await col
  //     .find({
  //       id: 1,
  //     })
  //     .toArray();

  //查询id>1的歌曲:$gt
  //   let data = await col
  //     .find({
  //       id: {
  //         $gt: 1,
  //       },
  //     })
  //     .toArray();

  //查询4>id>1的歌曲
  //   let data = await col
  //     .find({
  //       id: {
  //         $gt: 1,
  //         $lt: 4,
  //       },
  //     })
  //     .toArray();

  //查询id是1或3的歌曲:$in
  //   let data = await col
  //     .find({
  //       id: {
  //         $in: [1, 3],
  //       },
  //     })
  //     .toArray();

  //查询id为2同时歌名为"我心依旧"的数据
  //   let data = await col
  //     .find({
  //       id: 2,
  //       name: "我心依旧",
  //     })
  //     .toArray();

  //查询id为3或歌名为 "我心依旧"的数据: $or
  //   let data = await col
  //     .find({
  //       $or: [
  //         {
  //           id: 3,
  //         },
  //         {
  //           name: "我心依旧",
  //         },
  //       ],
  //     })
  //     .toArray();

  //需求：对id进行排序 降序 sort({id:1}) 1:升序  -1:降序
  //   let data = await col.find().sort({ id: -1 }).toArray();

  //需求：获取 第一页数据page 1 每页 5条  分页的制作方法有顺序要求：limit().skip().sort()
  //获取第一页数据，一页显示pagesize：2条： limit(pagesize).skip(index) :index起始下标
  /*
    page  pagesize  index=(page-1)*pagesize
    1      2        0
    2      2        2
    3      2        4
  */
  //   let page = 2;
  //   let pagesize = 2;
  //   let index = (page - 1) * pagesize;
  //   let data = await col.find().limit(pagesize).skip(index).toArray();
  //   console.log(data);

  //删除 D delete
  //   let data = await col.deleteMany({ id: 4 }); //删除id为1的数据
  //   if (data.deletedCount) {
  //     console.log("删除成功");
  //   } else {
  //     console.log("删除失败");
  //   }
  //   console.log(data);

  //改数据 U update
  let data = await col.updateMany(
    { id: 1 },
    {
      $set: {
        name: "天后",
      },
    }
  );
  if (data.modifiedCount) {
    console.log("修改成功");
  } else {
    console.log("修改失败");
  }
  console.log(data);

  //关闭数据库连接
  client.close();
});
